package com.zx._12_算法.剑指offer._2022;

import com.zx.common.model.ListNode;

/**
 * 从尾到头打印链表(其实就是链表反转)
 * https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/
 */
public class 从尾到头打印链表 {

    /**
     * 1.暴力破解
     *
     * @param head
     * @return
     */
    public int[] reversePrint1(ListNode head) {
        // 1. 先遍历一遍获得长度
        int length = 0;
        ListNode tmp = head;
        while (tmp != null) {
            tmp = tmp.next;
            length++;
        }
        // 利用计算出来的长度，逆向往数组内部插入链表的值
        int[] res = new int[length];
        tmp = head;
        for (int i = length - 1; i >= 0; i--) {
            res[i] = tmp.val;
            tmp = tmp.next;
        }
        return res;
    }


    /**
     * 2. 利用栈的特性，现将数据保存到栈中，然后再出栈，保存到数组中
     * 3. 保存的list中，然后逆向遍历list，将数据保存到数组中
     *
     * @param head
     * @return
     */
    public int[] reversePrint2(ListNode head) {
        return null;
    }


}
